package com.example.demo.剑指offer;

/**
 * @author：zzc
 * @date: 2022/8/18
 */
public class 数值的整数次方 {

    //实现 pow(x, n) ，即计算 x 的 n 次幂函数（即，xn）。不得使用库函数，同时不需要考虑大数问题。
    //
    //
    //
    //示例 1：
    //
    //输入：x = 2.00000, n = 10
    //输出：1024.00000
    //示例 2：
    //
    //输入：x = 2.10000, n = 3
    //输出：9.26100
    //示例 3：
    //
    //输入：x = 2.00000, n = -2
    //输出：0.25000
    //解释：2-2 = 1/22 = 1/4 = 0.25

    //注意：本题与主站 50 题相同：https://leetcode.cn/problems/powx-n/

    class Solution {

        public double myPow(double x, int n) {
            if (n == 0) {
                return 1;
            }
            if (n == 1) {
                return x;
            }
            if (n == -1) {
                return 1 / x;
            }
            double half = myPow(x, n / 2);
            return half * half * myPow(x, n % 2);
        }
    }

}
